﻿using System;
using System.ComponentModel;

namespace ScriptXCompiler
{
    public enum IssueId
    {
        [Description("There is cross reference in the source files, it may cause script runtime error.")]
        CrossRef = 1,

        [Description("Does not support constructor overload.")]
        CtorOverload = 2,

        [Description("Enum field have both assign value and EnumValue attribute.")]
        EnumFieldTwoValue = 3,

        [Description("Enum field doesn't have assign value nor EnumValue attribute.")]
        EnumFieldNoValue = 4,

        [Description("Event is not supported.")]
        EventNotSupport = 5,

        [Description("Constructor with parameter can not have object create initializer.")]
        CtorParamWithInitializer = 20,

        [Description("Throw must follow by expression")]
        ThrowNothing = 22,

        [Description("Can not use non script type [{0}]")]
        UseNonScript = 23,

        [Description("Can not call non script method.")]
        CallNonScript = 24,

        [Description("The identified specified in catch clause must be 'e'")]
        CatchOnlyE = 25,

        [Description("Native method body should be within /**/")]
        NativeFormat = 26,

        [Description("Call property getter/setter at same time and is part of assignment.")]
        SelfAssignWithProperty = 27,

        [Description("Call property getter/setter at same time and is part of assignment.")]
        PropertyGetAndSet = 28,

        [Description("Unrecognized expression type [{0}].")]
        UnknownExpressionType = 29,

        [Description("Unrecognized composite operator [{0}].")]
        UnknownCompositeOperator = 30,

        [Description("Unrecognized unary operator [{0}].")]
        UnknownUnaryOperator = 31,

        [Description("Unrecognized symbol kind [{0}].")]
        UnknownSymbol = 32,

        [Description("Unrecognized property accessor [{0}].")]
        UnknownAccessor = 33,

        [Description("Symbol [{0}] mark as compile time constant, but not declare as const.")]
        NotConstant = 40,

        [Description("Compiler can not bind semantic info.")]
        SemanticBind = 50,

        [Description("Goto is not supported.")]
        GotoNotSupport = 100,

        [Description("Yield is not supported.")]
        YieldNotSupport = 101,

        [Description("Indexer is not supported.")]
        IndexerNotSupport = 102,

        [Description("Named parameter is not supported.")]
        NamedArgumentNotSupport = 103,

        [Description("Partial class is not supported.")]
        PartialNotSupport = 104,

        [Description("Base call is not supported, use call of framework method.")]
        BaseCallNotSupport = 105,

        [Description("Extension method is not supported.")]
        ExtensionMethodNotSupport = 106,

        [Description("Default parameter is not supported.")]
        DefaultParamNotSupport = 107,

        [Description("Lock is not supported.")]
        LockNotSupport = 108,

        [Description("Interface not supported in framework [{0}].")]
        InterfaceNotSupport = 110,

        [Description("Interface inherit is not supported.")]
        InterfaceInheritNotSupport = 111,

        [Description("Enum is not supported in framework [{0}].")]
        EnumNotSupport = 112,

        [Description("Enum inherit is not supported.")]
        EnumInheritNotSupport = 113,

        [Description("Default expression detected, translate to 'null', but it might not correct.")]
        DefaultKeyword = 1024,

        [Description("Bind semantic info with overload resolution fail. only one candidate found.")]
        OverloadResolveOnlyOne = 1025,
    }
}
